home *** CD-ROM | disk | FTP | other *** search
Wrap
var googleredesignedBrowserOverlay = { MAIN_POPUPS:["googleredesigned-status-popup","googleredesigned-toolbar-popup","googleredesigned-tools-menu-popup","googleredesigned-prism-menu-popup","googleredesigned-seamonkey-tools-menu-popup"], addFile:function () { openDialog("chrome://googleredesigned/content/edit.xul", googleredesignedCommon.getRandomDialogName("googleredesignedEdit"), googleredesignedCommon.editDialogOptions, {uri: content.document.location.href, code: content.document.childNodes[0].textContent, updateURL: content.document.location.href}); }, addSite:function () { var url = content.location.href; var code = "@namespace url(http://www.w3.org/1999/xhtml);\n\n@-moz-document url(\"" + url + "\") {\n\n}"; googleredesignedCommon.add(code); }, appendStyleMenuItems:function (popup, styles) { for (var i = 0; i < styles.length; i++) { try { popup.appendChild(googleredesignedBrowserOverlay.getApplicableStyleMenuItem(styles[i], i)); } catch (ex) { Components.utils.reportError(ex); } } }, autoupdateassignedcheck:function () { var ds = new GoogleRedesignedRDFDataSource(googleredesignedBrowserOverlay.getConfigUri()); var te = ds.getNode("urn:googleredesigned:extension").getChildren(); while (te.hasMoreElements()) { var extensionautoupdateassignednode = te.getNext(); } return extensionautoupdateassignednode.getTarget("urn:googleredesigned#autoupdateassigned").getValue(); }, checkUpdateEvent:function (doc, style) { var code = googleredesignedBrowserOverlay.getCodeFromPage(doc); if (!googleredesignedCommon.cssAreEqual(style.originalCode, code)) { googleredesignedCommon.dispatchEvent(doc, "styleCanBeUpdated"); doc.addEventListener("googleredesignedUpdate", googleredesignedBrowserOverlay.updateFromSite, false); } else { googleredesignedCommon.dispatchEvent(doc, "styleAlreadyInstalled"); } }, cleanURI:function (uri) { var hash = uri.indexOf("#"); if (hash > -1) { uri = uri.substring(0, hash); } return uri; }, clearStyleMenuItems:function (event) { var popup = event.target; for (var i = popup.childNodes.length - 1; i >= 0; i--) { if (popup.childNodes[i].className == "style-menu-item" || popup.childNodes[i].className == "no-style-menu-item") { popup.removeChild(popup.childNodes[i]); } } }, findStyle:function (e) { openUILinkIn(googleredesignedBrowserOverlay.URL_STRINGS.getFormattedString("googleredesignedSearchUrl", [encodeURIComponent(content.location.href)]), "tab"); }, getApplicableStyleMenuItem:function (style, position) { var item = document.createElementNS(googleredesignedCommon.XULNS, "menuitem"); item.setAttribute("label", style.description); item.setAttribute("type", "checkbox"); item.setAttribute("checked", style.enabled); item.googleredesignedStyle = style; item.setAttribute("oncommand", "googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)"); item.setAttribute("onclick", "googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)"); item.setAttribute("class", "style-menu-item"); if (position < 9) { item.setAttribute("accesskey", position + 1); } return item; }, getApplicableStyles:function () { var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var applicableStyles = []; var me = []; while (resourceEnumerator.hasMoreElements()) { var matches = false; var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); me.push(style); var targetEnumerator = style.siteURLs; while (!matches && targetEnumerator.hasMoreElements()) { var siteURL = targetEnumerator.getNext().getValue(); if (this.cleanURI(content.document.location.href) == this.cleanURI(siteURL)) { applicableStyles.push(style); matches = true; } } targetEnumerator = style.siteURLPrefixes; while (!matches && targetEnumerator.hasMoreElements()) { var siteURLPrefix = targetEnumerator.getNext().getValue(); if (content.document.location.href.indexOf(siteURLPrefix) == 0) { applicableStyles.push(style); matches = true; } } var domain = content.document.domain; if (domain) { targetEnumerator = style.domains; while (!matches && targetEnumerator.hasMoreElements()) { var siteDomain = targetEnumerator.getNext().getValue(); if (siteDomain == domain) { applicableStyles.push(style); matches = true; } else { var subdomain = "." + siteDomain; var domainPosition = domain.indexOf(subdomain); if (domainPosition > -1 && domainPosition == domain.length - subdomain.length) { applicableStyles.push(style); matches = true; } } } } } return applicableStyles; }, getCodeFromPage:function (doc) { var codeTextNodes = doc.getElementById("googleredesigned-code").childNodes; var code = ""; for (var i = 0; i < codeTextNodes.length; i++) { code += codeTextNodes[i].nodeValue; } return code; }, getConfigUri:function () { var file = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile); file.append("extensions"); file.append("{cc85cd4e-5a5b-4eda-a25c-bdaffa93b406}"); file.append("chrome"); file.append("content"); file.append("config.rdf"); var ioService = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); if (!file.exists()) { var scriptableStream = Components.classes['@mozilla.org/scriptableinputstream;1'].getService(Components.interfaces.nsIScriptableInputStream); var channel = ioService.newChannel("chrome://googleredesigned/content/config-default.rdf", null, null); var input = channel.open(); scriptableStream.init(input); var data = scriptableStream.read(input.available()); scriptableStream.close(); input.close(); var foStream = Components.classes['@mozilla.org/network/file-output-stream;1'].createInstance(Components.interfaces.nsIFileOutputStream); foStream.init(file, 2 | 8 | 32, 436, 0); foStream.write(data, data.length); foStream.close(); } return ioService.newFileURI(file).spec; }, getContainedDocuments:function (docShell) { var docs = []; var containedDocShells = docShell.getDocShellEnumerator(Components.interfaces.nsIDocShellTreeItem.typeAll, Components.interfaces.nsIDocShell.ENUMERATE_FORWARDS); while (containedDocShells.hasMoreElements()) { try { var doc = containedDocShells.getNext().QueryInterface(Components.interfaces.nsIDocShell).contentViewer.DOMDocument; docs.push(doc); } catch (ex) { dump(ex); } } return docs; }, getDomainList:function (domain, array) { if (Components.interfaces.nsIEffectiveTLDService) { var tld = Components.classes['@mozilla.org/network/effective-tld-service;1'].getService(Components.interfaces.nsIEffectiveTLDService); if (Components.ID("{b07cb0f0-3394-572e-6260-dbaed0a292ba}").equals(Components.interfaces.nsIStyleSheetService)) { if (domain.length <= tld.getEffectiveTLDLength(domain)) { return; } } else { if (domain == tld.getPublicSuffixFromHost(domain)) { return; } } } array[array.length] = domain; var firstDot = domain.indexOf("."); var lastDot = domain.lastIndexOf("."); if (firstDot != lastDot) { if (!isNaN(parseInt(domain.substring(lastDot + 1, domain.length)))) { return; } googleredesignedBrowserOverlay.getDomainList(domain.substring(firstDot + 1, domain.length), array); } }, getDomainMenuItem:function (domain) { var addSite = document.createElementNS(googleredesignedCommon.XULNS, "menuitem"); addSite.setAttribute("label", googleredesignedBrowserOverlay.STRINGS.getFormattedString("writeForDomain", [domain])); addSite.setAttribute("oncommand", "googleredesignedCommon.addDomain(\"" + domain + "\")"); return addSite; }, getGlobalStyles:function () { var globalStyles = []; var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var applicableStyles = []; while (resourceEnumerator.hasMoreElements()) { var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); if (style.global && style.appliesToNamespace(googleredesignedCommon.HTMLNS)) { globalStyles.push(style); } } return globalStyles; }, getStyleByURI:function (uri) { var style = null; var enumerator = GoogleRedesignedStyle.prototype.ds.getAllResources(); while (enumerator.hasMoreElements()) { var node = enumerator.getNext(); style = new GoogleRedesignedStyle(node); if (style.uri == uri) { return style; } } return null; }, grFirstRun:function () { gBrowser.removeEventListener("load", googleredesignedBrowserOverlay.grFirstRun, true); var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); var grinstalled = grprefsinstance.getBoolPref("extensions.googleredesigned.installed"); var grUrl; if (!grinstalled) { grprefsinstance.setBoolPref("extensions.googleredesigned.installed", true); grUrl = "http://www.globexdesigns.com/gr/?page=welcome"; gBrowser.selectedTab = gBrowser.addTab(grUrl); } else { grUrl = "http://www.globexdesigns.com/gr/?page=changelog"; gBrowser.selectedTab = gBrowser.addTab(grUrl); } }, handleStyleMenuItemClick:function (event, style) { if (event.button == 2) { googleredesignedCommon.openEdit(style); var element = event.target; while (element) { if (element.nodeName == "menupopup") { element.hidePopup(); } element = element.parentNode; } event.stopPropagation(); } }, init:function () { googleredesignedBrowserOverlay.STRINGS = document.getElementById("googleredesigned-strings"); googleredesignedBrowserOverlay.URL_STRINGS = document.getElementById("googleredesigned-url-strings"); var appcontent = document.getElementById("appcontent"); if (!appcontent) { appcontent = document.getElementById("frame_main_pane"); } if (appcontent) { appcontent.addEventListener("DOMContentLoaded", googleredesignedBrowserOverlay.onPageLoad, true); } if(document.getElementById("gmailredesigned")){ document.getElementById("gmailredesigned").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gmailredesigned").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gmailvsour").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gmail/gmail_dev.css');},false); document.getElementById("gmailclog").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gmail');},false); document.getElementById("gmailsrep").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=2');},false); document.getElementById("gcalredesigned").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gcalredesigned").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gcalvsour").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gcal/gcal_dev.css');},false); document.getElementById("gcalclog").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gcal');},false); document.getElementById("gcalsrep").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=3');},false); document.getElementById("greaderredesigned").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("greaderredesigned").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("greadervsour").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/greader/greader_dev.css');},false); document.getElementById("greaderclog").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=greader');},false); document.getElementById("greadersrep").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=4');},false); document.getElementById("gdocsredesigned").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gdocsredesigned").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gdocsvsour").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gdocs/gdocs_dev.css');},false); document.getElementById("gdocsclog").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gdocs');},false); document.getElementById("gdocssrep").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=5');},false); document.getElementById("gr-unlock").addEventListener("command",function(event){openDialog('chrome://googleredesigned/content/unlock.xul',"googleredesignedUnlock"+Math.random(),"chrome,close=yes,centerscreen,modal");},false); document.getElementById("grupdateitem").addEventListener("command",function(event){GoogleRedesignedUpdateManager.googleredesignedupdate('manual')},false); } if(document.getElementById("gmailredesigned-tools")){ document.getElementById("gmailredesigned-tools").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gmailredesigned-tools").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gmailvsour-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gmail/gmail_dev.css');},false); document.getElementById("gmailclog-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gmail');},false); document.getElementById("gmailsrep-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=2');},false); document.getElementById("gcalredesigned-tools").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gcalredesigned-tools").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gcalvsour-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gcal/gcal_dev.css');},false); document.getElementById("gcalclog-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gcal');},false); document.getElementById("gcalsrep-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=3');},false); document.getElementById("greaderredesigned-tools").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("greaderredesigned-tools").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("greadervsour-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/greader/greader_dev.css');},false); document.getElementById("greaderclog-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=greader');},false); document.getElementById("greadersrep-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=4');},false); document.getElementById("gdocsredesigned-tools").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gdocsredesigned-tools").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gdocsvsour-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/gdocs/gdocs_dev.css');},false); document.getElementById("gdocsclog-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gdocs');},false); document.getElementById("gdocssrep-tools").addEventListener("command",function(event){gBrowser.selectedTab = gBrowser.addTab('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=5');},false); document.getElementById("gr-unlock-tools").addEventListener("command",function(event){openDialog('chrome://googleredesigned/content/unlock.xul',"googleredesignedUnlock"+Math.random(),"chrome,close=yes,centerscreen,modal");},false); document.getElementById("grupdateitem-tools").addEventListener("command",function(event){GoogleRedesignedUpdateManager.googleredesignedupdate('manual')},false); } if(document.getElementById("gmailredesigned-prism")){ document.getElementById("gmailredesigned-prism").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gmailredesigned-prism").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gmailvsour-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/gmail/gmail_dev.css', null, null);},false); document.getElementById("gmailclog-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gmail', null, null);},false); document.getElementById("gmailsrep-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=2', null, null);},false); document.getElementById("gcalredesigned-prism").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gcalredesigned-prism").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gcalvsour-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/gcal/gcal_dev.css', null, null);},false); document.getElementById("gcalclog-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gcal', null, null);},false); document.getElementById("gcalsrep-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=3', null, null);},false); document.getElementById("greaderredesigned-prism").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("greaderredesigned-prism").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("greadervsour-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/greader/greader_dev.css', null, null);},false); document.getElementById("greaderclog-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/?page=changelogs&css=greader', null, null);},false); document.getElementById("greadersrep-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=4', null, null);},false); document.getElementById("gdocsredesigned-prism").addEventListener("command",function(event){googleredesignedBrowserOverlay.styleMenuItemCommand(event, this.googleredesignedStyle)},false); //document.getElementById("gdocsredesigned-prism").addEventListener("click",function(event){googleredesignedBrowserOverlay.handleStyleMenuItemClick(event, this.googleredesignedStyle)},false); document.getElementById("gdocsvsour-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/gdocs/gdocs_dev.css', null, null);},false); document.getElementById("gdocsclog-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/products/gr/?page=changelogs&css=gdocs', null, null);},false); document.getElementById("gdocssrep-prism").addEventListener("command",function(event){document.getElementById("browser_content").loadURI('http://www.globexdesigns.com/forums/index.php?autocom=tracker&showproject=5', null, null);},false); document.getElementById("gr-unlock-prism").addEventListener("command",function(event){openDialog('chrome://googleredesigned/content/unlock.xul',"googleredesignedUnlock"+Math.random(),"chrome,close=yes,centerscreen,modal");},false); document.getElementById("grupdateitem-prism").addEventListener("command",function(event){GoogleRedesignedUpdateManager.googleredesignedupdate('manual')},false); } if (googleredesignedBrowserOverlay.autoupdateassignedcheck() == "false") { var dsp = new GoogleRedesignedRDFDataSource(googleredesignedBrowserOverlay.getConfigUri()); var te = dsp.getNode("urn:googleredesigned:extension").getChildren(); while (te.hasMoreElements()) { var extensionautoupdateassignednode = te.getNext(); } extensionautoupdateassignednode.modifyTarget("urn:googleredesigned#autoupdateassigned", "false", "true"); dsp.save(); //window.setTimeout(function(){GoogleRedesignedUpdateManager.googleredesignedupdate("automate")},120000); } googleredesignedBrowserOverlay.instalandupdatecheck(); }, instalandupdatecheck:function () { var grprefsinstance = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); var grversion = grprefsinstance.getCharPref("extensions.googleredesigned.currentversion"); var gretensionmanagerinstance = Components.classes['@mozilla.org/extensions/manager;1'].getService(Components.interfaces.nsIExtensionManager); var grextension = gretensionmanagerinstance.getItemForID("{cc85cd4e-5a5b-4eda-a25c-bdaffa93b406}"); var grnewversion = grextension.version; if (grversion != grnewversion) { grprefsinstance.setCharPref("extensions.googleredesigned.currentversion", grnewversion); if(gBrowser) gBrowser.addEventListener("load", googleredesignedBrowserOverlay.grFirstRun, true); } }, installFromSite:function (event) { var doc; if (event.target.nodeName == "#document") { doc = event.target; } var uri = googleredesignedBrowserOverlay.cleanURI(doc.location.href); var links = doc.getElementsByTagName("link"); var code = null; var description = null; var updateURL = null; var installPingURL = null; var triggeringDocument = null; for (i in links) { switch (links[i].rel) { case "googleredesigned-code": var id = links[i].getAttribute("href").replace("#", ""); var element = doc.getElementById(id); if (element) { code = element.textContent; } break; case "googleredesigned-description": var id = links[i].getAttribute("href").replace("#", ""); var element = doc.getElementById(id); if (element) { description = element.textContent; } break; case "googleredesigned-install-ping-url": installPingURL = links[i].href; break; case "googleredesigned-update-url": updateURL = links[i].href; break; default:; } } openDialog("chrome://googleredesigned/content/edit.xul", "googleredesignedEdit" + Math.random(), googleredesignedCommon.editDialogOptions, {uri: uri, description: description, code: code, updateURL: updateURL, installPingURL: installPingURL, triggeringDocument: doc}); }, isAllowedToInstall:function (doc) { try { var domain = doc.domain; } catch (ex) { return false; } if (!domain) { return false; } var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefService); prefs = prefs.getBranch("extensions.googleredesigned.install."); var allowedDomains = prefs.getCharPref("allowedDomains").split(" "); if (allowedDomains.indexOf(doc.domain) > -1) { return true; } for (var i = 0; i < allowedDomains.length; i++) { var subdomain = "." + allowedDomains[i]; var subdomainIndex = doc.domain.lastIndexOf(subdomain); if (subdomainIndex > -1 && subdomainIndex == doc.domain.length - subdomain.length) { return true; } } return false; }, mainPopupShowing:function (event) { var popup = event.target; switch (this.MAIN_POPUPS.indexOf(popup.id)) { case -1: return; case 0: break; default: var primary = document.getElementById(this.MAIN_POPUPS[0]); for (var i = 0; i < primary.childNodes.length; i++) { popup.appendChild(primary.childNodes[i].cloneNode(true)); } } document.getElementById("googleredesigned-add-file").style.display = (content.document.contentType == "text/css") ? "-moz-box" : "none"; var applicableStyles = googleredesignedBrowserOverlay.getApplicableStyles(); if (applicableStyles.length > 0) { googleredesignedBrowserOverlay.appendStyleMenuItems(popup, applicableStyles); } }, onPageLoad:function (event) { if (event.originalTarget.nodeName == "#document" && googleredesignedBrowserOverlay.isAllowedToInstall(event.originalTarget)) { var doc = event.originalTarget; var uri = googleredesignedBrowserOverlay.cleanURI(doc.location.href); var style = googleredesignedBrowserOverlay.getStyleByURI(uri); if (style == null) { googleredesignedCommon.dispatchEvent(doc, "styleCanBeInstalled"); doc.addEventListener("googleredesignedInstall", googleredesignedBrowserOverlay.installFromSite, false); } else { var code = googleredesignedBrowserOverlay.getCodeFromPage(doc); if (code) { googleredesignedBrowserOverlay.checkUpdateEvent(doc, style); } else { doc.addEventListener("googleredesignedCodeLoaded", function () {googleredesignedBrowserOverlay.checkUpdateEvent(doc, style);}, false); googleredesignedCommon.dispatchEvent(doc, "styleLoadCode"); } } doc.addEventListener("postFromGoogleRedesigned", googleredesignedBrowserOverlay.provideStyleInfo, false); doc.addEventListener("postedFromGoogleRedesigned", googleredesignedBrowserOverlay.updateStyleURI, false); } }, openSidebar:function () { toggleSidebar("viewGoogleRedesignedSidebar"); }, pageStyleMenu:null, pageStylePopupHiding:function (event) { var popup = event.target; if (popup != pageStyleMenu) { return; } var separator = document.getElementById("googleredesignedPageStyleSeparator"); while (separator.nextSibling) { separator.parentNode.removeChild(separator.nextSibling); } separator.parentNode.removeChild(separator); }, pageStylePopupShowing:function (event) { var popup = event.target; if (popup != pageStyleMenu.firstChild) { return; } var separator = document.createElementNS(googleredesignedCommon.XULNS, "menuseparator"); separator.id = "googleredesignedPageStyleSeparator"; popup.appendChild(separator); popup.appendChild(document.getElementById("googleredesigned-global-styles").cloneNode(true)); var applicableStyles = googleredesignedBrowserOverlay.getApplicableStyles(); if (applicableStyles.length > 0) { googleredesignedBrowserOverlay.appendStyleMenuItems(popup, applicableStyles); } }, popupshowingedited:function (event) { if (this.updateinprogresscheck() == "true") { document.getElementById("googleredesigned-status-popup").hidePopup(); event.preventDefault(); } else { var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var stylearray = []; while (resourceEnumerator.hasMoreElements()) { var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); stylearray.push(style); } var firststyle = stylearray[0]; var secondstyle = stylearray[1]; var thirdstyle = stylearray[2]; var fourthstyle = stylearray[3]; document.getElementById("gmailredesigned").googleredesignedStyle = firststyle; document.getElementById("gmailredesigned").setAttribute("label", firststyle.description + " v" + firststyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gmailredesigned").setAttribute("checked", firststyle.enabled); document.getElementById("gcalredesigned").googleredesignedStyle = secondstyle; document.getElementById("gcalredesigned").setAttribute("label", secondstyle.description + " v" + secondstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gcalredesigned").setAttribute("checked", secondstyle.enabled); document.getElementById("greaderredesigned").googleredesignedStyle = thirdstyle; document.getElementById("greaderredesigned").setAttribute("label", thirdstyle.description + " v" + thirdstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("greaderredesigned").setAttribute("checked", thirdstyle.enabled); if(!fourthstyle.neverUpdate){ document.getElementById("gdocsredesigned").googleredesignedStyle = fourthstyle; document.getElementById("gdocsredesigned").setAttribute("label", fourthstyle.description + " v" + fourthstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gdocsredesigned").setAttribute("checked", fourthstyle.enabled); document.getElementById("gdocsredesigned").parentNode.parentNode.hidden=false; document.getElementById("gr-unlock").hidden=true; } else{document.getElementById("gdocsredesigned").parentNode.parentNode.hidden=true;} } }, popupshowingeditedtools:function (event) { if (this.updateinprogresscheck() == "true") { document.getElementById("googleredesigned-tools-popup").hidePopup(); event.preventDefault(); } else { var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var stylearray = []; while (resourceEnumerator.hasMoreElements()) { var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); stylearray.push(style); } var firststyle = stylearray[0]; var secondstyle = stylearray[1]; var thirdstyle = stylearray[2]; var fourthstyle = stylearray[3]; document.getElementById("gmailredesigned-tools").googleredesignedStyle = firststyle; document.getElementById("gmailredesigned-tools").setAttribute("label", firststyle.description + " v" + firststyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gmailredesigned-tools").setAttribute("checked", firststyle.enabled); document.getElementById("gcalredesigned-tools").googleredesignedStyle = secondstyle; document.getElementById("gcalredesigned-tools").setAttribute("label", secondstyle.description + " v" + secondstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gcalredesigned-tools").setAttribute("checked", secondstyle.enabled); document.getElementById("greaderredesigned-tools").googleredesignedStyle = thirdstyle; document.getElementById("greaderredesigned-tools").setAttribute("label", thirdstyle.description + " v" + thirdstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("greaderredesigned-tools").setAttribute("checked", thirdstyle.enabled); if(!fourthstyle.neverUpdate){ document.getElementById("gdocsredesigned-tools").googleredesignedStyle = fourthstyle; document.getElementById("gdocsredesigned-tools").setAttribute("label", fourthstyle.description + " v" + fourthstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gdocsredesigned-tools").setAttribute("checked", fourthstyle.enabled); document.getElementById("gdocsredesigned-tools").parentNode.parentNode.hidden=false; document.getElementById("gr-unlock-tools").hidden=true; } else{document.getElementById("gdocsredesigned-tools").parentNode.parentNode.hidden=true;} } }, popupshowingeditedprism:function (event) { if (this.updateinprogresscheck() == "true") { document.getElementById("googleredesigned-prism-popup").hidePopup(); event.preventDefault(); } else { var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var stylearray = []; while (resourceEnumerator.hasMoreElements()) { var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); stylearray.push(style); } var firststyle = stylearray[0]; var secondstyle = stylearray[1]; var thirdstyle = stylearray[2]; var fourthstyle = stylearray[3]; document.getElementById("gmailredesigned-prism").googleredesignedStyle = firststyle; document.getElementById("gmailredesigned-prism").setAttribute("label", firststyle.description + " v" + firststyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gmailredesigned-prism").setAttribute("checked", firststyle.enabled); document.getElementById("gcalredesigned-prism").googleredesignedStyle = secondstyle; document.getElementById("gcalredesigned-prism").setAttribute("label", secondstyle.description + " v" + secondstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gcalredesigned-prism").setAttribute("checked", secondstyle.enabled); document.getElementById("greaderredesigned-prism").googleredesignedStyle = thirdstyle; document.getElementById("greaderredesigned-prism").setAttribute("label", thirdstyle.description + " v" + thirdstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("greaderredesigned-prism").setAttribute("checked", thirdstyle.enabled); if(!fourthstyle.neverUpdate){ document.getElementById("gdocsredesigned-prism").googleredesignedStyle = fourthstyle; document.getElementById("gdocsredesigned-prism").setAttribute("label", fourthstyle.description + " v" + fourthstyle.code.split(" Embedded")[0].split("Version")[1].split(": ")[1]); document.getElementById("gdocsredesigned-prism").setAttribute("checked", fourthstyle.enabled); document.getElementById("gdocsredesigned-prism").parentNode.parentNode.hidden=false; document.getElementById("gr-unlock-prism").hidden=true; } else{document.getElementById("gdocsredesigned-prism").parentNode.parentNode.hidden=true;} } }, provideStyleInfo:function (event) { var doc = event.target; var style = new GoogleRedesignedStyle(doc.getElementById("googleredesigned-uri").value); if (style.code) { var data = {code: style.code, shortDescription: style.description}; doc.getElementById("googleredesigned-info").value = data.toSource(); var googleredesignedEvent = doc.createEvent("Events"); googleredesignedEvent.initEvent("postFromGoogleRedesignedReturn", false, false, doc.defaultView, null); doc.dispatchEvent(googleredesignedEvent); } else { GoogleRedesignedStyle.prototype.ds.deleteRecursive(style.node); } }, showGlobalStyles:function (event) { var popup = event.target; var globalStyles = googleredesignedBrowserOverlay.getGlobalStyles(); if (globalStyles.length == 0) { var noneMenuItem = document.createElementNS(googleredesignedCommon.XULNS, "menuitem"); noneMenuItem.setAttribute("label", googleredesignedBrowserOverlay.STRINGS.getString("noGlobalStyles")); noneMenuItem.setAttribute("disabled", "true"); noneMenuItem.className = "no-style-menu-item"; popup.appendChild(noneMenuItem); } else { googleredesignedBrowserOverlay.appendStyleMenuItems(popup, globalStyles); } event.stopPropagation(); }, styleGDocsUnlock:function () { var resourceEnumerator = GoogleRedesignedStyle.prototype.ds.getNode(GoogleRedesignedStyle.prototype.containerURI).getChildren(); var stylearray = []; while (resourceEnumerator.hasMoreElements()) { var style = new GoogleRedesignedStyle(resourceEnumerator.getNext()); stylearray.push(style); } var style = stylearray[3]; style.enabled = true; style.neverUpdate= false; GoogleRedesignedStyle.prototype.ds.save(); googleredesignedCommon.reloadManage(); }, styleMenuItemCommand:function (event, style) { style.enabled = !style.enabled; GoogleRedesignedStyle.prototype.ds.save(); googleredesignedCommon.reloadManage(); event.stopPropagation(); }, updateFromSite:function (event) { var doc = event.target; var uri = googleredesignedBrowserOverlay.cleanURI(doc.location.href); var enumerator = GoogleRedesignedStyle.prototype.ds.getAllResources(); var style = null; var found = false; while (enumerator.hasMoreElements()) { style = new GoogleRedesignedStyle(enumerator.getNext()); if (style.uri == uri) { found = true; break; } } if (!found) { return; } var windowName = "googleredesignedEdit" + style.uri.replace(/\W/g, ""); var links = doc.getElementsByTagName("link"); var code = null; for (i in links) { switch (links[i].rel) { case "googleredesigned-code": var id = links[i].getAttribute("href").replace("#", ""); var element = doc.getElementById(id); if (element) { code = element.textContent; } break; default:; } } openDialog("chrome://googleredesigned/content/edit.xul", windowName, googleredesignedCommon.editDialogOptions, {uri: style.uri, code: code, windowtype: windowName, triggeringDocument: doc}); }, updateStyleURI:function (event) { var doc = event.target; var oldStyle = new GoogleRedesignedStyle(doc.getElementById("old-uri").value); var newStyle = new GoogleRedesignedStyle(doc.getElementById("new-uri").value); oldStyle.copy(newStyle); GoogleRedesignedStyle.prototype.ds.deleteRecursive(oldStyle.node); newStyle.updateURL = doc.getElementById("new-update-uri").value; newStyle.save(); googleredesignedCommon.reloadManage(); }, updateinprogresscheck:function () { var ds = new GoogleRedesignedRDFDataSource(googleredesignedBrowserOverlay.getConfigUri()); var te = ds.getNode("urn:googleredesigned:extension").getChildren(); while (te.hasMoreElements()) { var extensionupdatingnode = te.getNext(); } return extensionupdatingnode.getTarget("urn:googleredesigned#updating").getValue(); }, writeStylePopupShowing:function (event) { var popup = event.target; var addSite = document.createElementNS(googleredesignedCommon.XULNS, "menuitem"); addSite.setAttribute("label", googleredesignedBrowserOverlay.STRINGS.getString("writeForSite")); addSite.setAttribute("accesskey", googleredesignedBrowserOverlay.STRINGS.getString("writeForSiteAccesskey")); addSite.setAttribute("oncommand", "googleredesignedBrowserOverlay.addSite()"); popup.appendChild(addSite); if (content.document.domain) { var domains = []; googleredesignedBrowserOverlay.getDomainList(content.document.domain, domains); for (var i = 0; i < domains.length; i++) { popup.appendChild(googleredesignedBrowserOverlay.getDomainMenuItem(domains[i])); } } addSite = document.createElementNS(googleredesignedCommon.XULNS, "menuitem"); addSite.setAttribute("label", googleredesignedBrowserOverlay.STRINGS.getString("writeBlank")); addSite.setAttribute("accesskey", googleredesignedBrowserOverlay.STRINGS.getString("writeBlankAccesskey")); addSite.setAttribute("oncommand", "googleredesignedCommonOverlay.addBlank()"); popup.appendChild(addSite); } } addEventListener("load", googleredesignedBrowserOverlay.init, false);